/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#include "菜单管理.h"
#include "ui组件构建结构.h"

//#include "A_引擎/引擎.h"
//#include "A_引擎/文件工程/工程文件.h"

#include "照壁界面/照壁主界面.h"
#include "框架/屏幕.h"
#include "框架/工作区/渲染器视口/渲染器视口工作区.h"
#include "框架/工作区/节点视口/ui渲染合成节点菜单.h"

static S_菜单管理* g菜单管理 = nullptr;


void f_菜单管理_创建() {
	g菜单管理 = new S_菜单管理;

}

void f_菜单管理_销毁() {
	if (g菜单管理) {
		assert(g菜单管理);

		delete g菜单管理;
	}
}

S_菜单管理& f_菜单管理_get() {
	return *g菜单管理;
}








bool on_配置菜单项(C_Widget* self, const std::u16string name, uint16 id) {
	if (name == u"设置") {
		if (!S_框架::g_设置窗口) {
			S_框架::g_设置窗口 = f_界面_创建配置窗口();
		}

		f_window_set显示(S_框架::g_设置窗口, true);
	}
	else if (name == u"照壁") {
		f_照壁_打开();

	}
	else if (name == u"导入") {

	}
	else if (name == u"设置") {
		//window->f_创建窗口("子窗口", 0, 0, 640, 360);

	}
	return false;
}



static bool on_编辑_文件菜单项(C_Widget* self, const std::u16string name, uint16 id) {
	
	if (name == u"撤销") {
		f_操作记录_全局撤销(self, E_键位执行状态::e_开始);
	}
	else if (name == u"重做") {
		f_操作记录_全局重做(self, E_键位执行状态::e_开始);
	}
	else if (name == u"重复上一步") {
		
	}
	else if (name == u"重复下一步") {
		
	}
	else if (name == u"测试导入场景n2") {
		
	}
	return false;
}


bool on_文件菜单项(C_Widget* self, const std::u16string name, uint16 id) {
	
	std::string 默认路径 = "I:/TEMP/";
	if (f_file_文件是否存在(默认路径) == false) {
		默认路径 = f_str_u16_to_u8(S_引擎配置::g_工程文件临时路径);
	}
	if (!S_框架::g_文件窗口) {
		
	}
	f_ui_添加临时文件路径(S_框架::g_ui文件对话框, S_框架::g_最近打开文件);


	if (name == u"新建") {
		f_projectFile_新建();
		return false;
	}
	else if (name == u"打开") {
		f_ui_打开对话框(S_框架::g_文件窗口, E_对话框类型::e_读取, on_projectFile_文件打开保存, 默认路径, u".np");
	}
	else if (name == u"保存") {
		f_ui_打开对话框(S_框架::g_文件窗口, E_对话框类型::e_写入, on_projectFile_文件打开保存, 默认路径, u".np");
	}
	else if (name == u"另存") {
		f_ui_打开对话框(S_框架::g_文件窗口, E_对话框类型::e_写入, on_projectFile_文件打开保存, 默认路径, u".np");
	}
	else if (name == u"导入") {
		f_ui_打开对话框(S_框架::g_文件窗口, E_对话框类型::e_读取, on_projectFile_文件打开保存, 默认路径, u".ms");
	}
	
	return false;
}




C_Widget* f_界面构建_主菜单创建(S_UI渲染环境& ctx) {
	auto ui主菜单 = f_ui_创建菜单(ctx, E_方向::e_横向, {});
	ui主菜单->m_TypeName = "主菜单";

	S_菜单创建参数 编辑菜单{
		on_编辑_文件菜单项, {
			{u"撤销", u"", u"Ctrl Z", 0},
			{u"重做", u"", u"Shift Ctrl Z", 0},
			//{u"历史", "", 0},
			//{u"重复上一步", "", 0},
			//{u"重复下一步", "", 0},
		}
	};

	S_菜单创建参数 渲染菜单{
		(fp_on_菜单项点击)0, {
			{u"渲染单帧", u"", u"", 0},
			{u"渲染序列", u"", u"", 0},
		}
	};

	S_菜单创建参数 窗口菜单{
		on_重载渲染器菜单项, {
			{u"渲染单帧", u"", u"", 0},
			{u"渲染序列", u"", u"", 0},
			{u"", u"", u"", 0},
			{u"节点离线更新", u"", u"", 0},
			{u"节点离线更新序列", u"", u"", 0},
		}
	};

	S_菜单创建参数 配置菜单{
		on_配置菜单项, {
			{u"设置", u"", u"", 0},
			//{u"照壁", u"", u"", 0},
		}
	};



	S_菜单创建参数 文件菜单 = {
		on_文件菜单项, {
			{u"新建", u"文件", u"", 0},
			{u"打开", u"folder_open", u"", 0},
			{u"保存", u"07", u"", 0},
			{u"另存", u"doc_plus", u"", 0},
		}
	};

	f_ui_添加菜单项(ui主菜单,
		{
			(fp_on_菜单项点击)0, {
				{u"文件", u"", u"", &文件菜单},
				{u"编辑", u"", u"", &编辑菜单},
				//{u"项目", "", &渲染菜单},
				//{u"渲染", u"", &窗口菜单},
				{u"配置", u"", u"", &配置菜单},
				//{u"帮助", "", 0},
				{u"关于", u"", u"", 0},
			}
		}
		,
		ctx
		,
		0
	);

	return ui主菜单;
}


